#ifndef _SYSTEM_RESET_H
#define _SYSTEM_RESET_H

#include <driver/gpio.h>

/**
 * @brief 系统重置管理类
 * 
 * 提供系统重置、恢复出厂设置等功能
 */
class SystemReset {
public:
    /**
     * @brief 构造函数
     * 
     * @param reset_nvs_pin 重置NVS存储的按钮引脚
     * @param reset_factory_pin 恢复出厂设置的按钮引脚
     */
    SystemReset(gpio_num_t reset_nvs_pin, gpio_num_t reset_factory_pin);
    
    /**
     * @brief 检查重置按钮状态
     * 
     * 检测按钮是否被按下，并执行相应的重置操作
     */
    void CheckButtons();

private:
    /**
     * @brief 重置NVS存储的按钮引脚
     */
    gpio_num_t reset_nvs_pin_;
    
    /**
     * @brief 恢复出厂设置的按钮引脚
     */
    gpio_num_t reset_factory_pin_;

    /**
     * @brief 重置NVS闪存存储
     * 
     * 清除NVS中存储的配置数据
     */
    void ResetNvsFlash();
    
    /**
     * @brief 恢复出厂设置
     * 
     * 将设备重置为出厂状态
     */
    void ResetToFactory();
    
    /**
     * @brief 延时重启系统
     * 
     * @param seconds 延时重启的秒数
     */
    void RestartInSeconds(int seconds);
};


#endif
